﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClusterAggregation.Datum
{
    using Datum;
    /**
     *  General interface for similarity and distance functions
     */
    public interface ISimilarity
    {
        /**
         * get the matrix of relations between the given dataset.
         * might not be a full matrix (may be upper right matrix instead).
         * @param arg (AData[]) [IN] dataset for which to construct the matrix.
         * @return distance matrix
         */
        double[,]  getMatrix    (AData[] arg);

        /**
         * get the matrix of relations between the given dataset.
         * must be a full matrix, [i, j] = [j, i]
         * @param arg (AData[]) [IN] dataset for which to construct the matrix.
         * @return distance matrix
         */
        double[,]  getFullMatrix(AData[] arg);
        /**
         * calculate the similarity or the distance between 2 points of data.
         * @param a (AData) [IN]
         * @param b (AData) [IN]
         */
        double      similarity   (AData a , AData b);
    }
}
